package com.xinqi.modules.chat.third.rongyun.service;

import com.xinqi.modules.chat.chat.group.message.GroupNoticeMessage;
import com.xinqi.modules.chat.chat.official.dto.rsp.ChatAssistantContentMessageResultDTO;
import com.xinqi.modules.chat.chat.official.json.ChatRemindMessage;
import io.rong.util.CodeUtil;


public interface RongyunService {

    /* 用户注册融云 */
    String registUser(String userId, String userName, String avatar);

    /* 刷新用户信息 */
    boolean updateUser(String userId, String userName, String avatar);

    /* 融云创建群组 */
    boolean creatGroup(String groupId, String groupName, String userId);

    /* 融云加入群组 */
    boolean joinGroup(String groupId, String groupName, String[] userIds);

    /* 融云更新群名称 */
    boolean updateGroup(String groupId, String groupName);

    /* 融云退出群组 */
    boolean quitGroup(String groupId, String groupName, String[] userIds);

    /* 融云解散群组 */
    boolean dissGroup(String groupId, String userId);

    /*同步融云会话置顶*/
    boolean conversationTop(String userId, String conversationType, String targetId, boolean isTop);

    /*发送私聊信息*/
    boolean sentPrivateMsg(String senderId, String[] targetIds, String json);

    /* 融云发送聊天室消息 */
    boolean sentRoomMsg(String senderId, String[] roomIds, String json);

    /* 融云发送系统通知类消息 */
    boolean sentSystemCmdMsg(String[] targetIds, String json);

    /* 融云发送系统通知类消息 */
    boolean sentSystemUserCmdMsg(String[] targetIds, String json);

    boolean sentSystemCmdMsg(String senderId, String[] targetIds, String json);

    /**
     * 新奇提醒消息发送
     *
     * @param senderId
     * @param objectName
     * @param targetIds
     * @param message
     * @return
     */
    boolean sentRemindMsg(String senderId, String objectName, String[] targetIds, ChatRemindMessage message);

    /**
     * 发送群组通知类消息
     *
     * @param senderId
     * @param objectName
     * @param groupIds
     * @param message
     * @return
     */
    boolean sentGroupMsg(String senderId, String objectName, String[] groupIds, GroupNoticeMessage message);

    /**
     * 新奇助手、新奇提醒消息发送可更新消息内容
     *
     * @param senderId
     * @param objectName
     * @param targetIds
     * @param json
     * @return
     */
    boolean sentOfficialExtMsg(String senderId, String objectName, String[] targetIds, String json, String pushContent);

    /**
     * 新奇助手、新奇提醒消息发送已更新消息内容
     *
     * @param senderId
     * @param objectName
     * @param targetIds
     * @param message
     * @return
     */
    Boolean sentUpdateOfficialExtMsg(String senderId, String objectName, String[] targetIds, ChatAssistantContentMessageResultDTO message);

    /* 管理黑名单 */
    boolean blackManager(String userId, String friendId, Integer status);

    /* 融云群禁言 */
    boolean groupTaboo(String groupId, String[] userIds);

    /* 融云解除群禁言 */
    boolean groupTabooClose(String groupId, String[] userIds);

    /* 创建聊天室 */
    boolean createChatRoom(String roomId);

    /*销毁聊天室*/
    boolean destoryChatRoom(String roomId);

    /*禁言聊天室*/
    boolean tabooChatRoom(String roomId, String[] userIds);

    /*解除禁言聊天室*/
    boolean closeTabooChatRoom(String roomId, String[] userIds);

    /*白名单设置*/
    boolean tabooWhiteChatRoom(String roomId, String[] userIds);

    //消息免打扰
    boolean conversationDisturb(String userId, String targetId, CodeUtil.ConversationType type, Integer flag);

    /**
     * 融云封禁
     *
     * @param userId
     * @param minute 封禁时长，单位为分钟，最大值为 43200 分钟。
     * @return
     */
    public boolean ban(String userId, Integer minute);

    /**
     * 设置用户单聊禁言
     *
     * @param userId 被禁言用户 ID，支持批量设置，最多不超过 1000 个
     * @param state  禁言状态，0 解除禁言、1 添加禁言
     * @return
     */
    public boolean prohibition(String[] userId, Integer state);

    /**
     * 注销用户
     *
     * @param userId
     * @return
     */
    public boolean deactivate(String userId);


}
